package com.vca.common.response;

import com.vca.common.model.sf.Routes;
import com.vca.common.vo.PreOrderCommonVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 订单详情响应体
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="StoreOrderDetailInfoResponse对象", description="订单详情响应体")
public class StoreOrderDetailInfoResponse implements Serializable {

    private static final long serialVersionUID = -4324222121352855551L;

    @ApiModelProperty(value = "订单ID")
    private Integer id;

    @ApiModelProperty(value = "订单号")
    private String orderNo;

    @ApiModelProperty(value = "子订单号")
    private String merOrderNo;

    @ApiModelProperty(value = "商品ID")
    private Integer productId;

    @ApiModelProperty(value = "课程ID/套课ID/讲座ID/展览ID")
    private Long mainId;

    @ApiModelProperty(value = "收货人姓名")
    private String realName;

    @ApiModelProperty(value = "收货人电话")
    private String userPhone;

    @ApiModelProperty(value = "收货人详细地址")
    private String userAddress;

    @ApiModelProperty(value = "预约人")
    private Integer lecturer;

    @ApiModelProperty(value = "预约人电话")
    private String lecturerPhone;

    @ApiModelProperty(value = "预约人姓名")
    private String lecturerName;

    @ApiModelProperty(value = "预约人邮箱")
    private String lecturerEmail;

    @ApiModelProperty(value = "订单商品总数")
    private Integer totalNum;

    @ApiModelProperty(value = "订单总价")
    private BigDecimal totalPrice;

    @ApiModelProperty(value = "商品总价")
    private BigDecimal proTotalPrice;

    @ApiModelProperty(value = "实际支付金额")
    private BigDecimal payPrice;

    @ApiModelProperty(value = "礼品卡金额")
    private BigDecimal couponPrice;
    @ApiModelProperty(value = "支付状态 0未支付 1已支付")
    private Boolean paid;

    @ApiModelProperty(value = "支付时间")
    private Date payTime;

//    @ApiModelProperty(value = "支付方式")
//    private String payType;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "订单状态（0：待发货；1：待收货【已预约（未参与）】；2：已完成，待评价【已参与】；3：已完成（已评价）；）")
    private Integer status;

    @ApiModelProperty(value = "订单状态")
    private String orderStatus;

    @ApiModelProperty(value = "退款状态  0 未退款 1 申请中 2 已退款 3 退款中  4 待退货 5 退货中 6 退款取消")
    private Integer refundStatus;

//    @ApiModelProperty(value = "退款图片")
//    private String refundReasonWapImg;

    @ApiModelProperty(value = "退款用户说明")
    private String refundReasonWapExplain;

    @ApiModelProperty(value = "退款申请时间")
    private Date refundApplicationTime;

    @ApiModelProperty(value = "退款时间")
    private Date refundReasonTime;

    @ApiModelProperty(value = "前台退款理由")
    private String refundReasonWap;

    @ApiModelProperty(value = "不退款的理由")
    private String refundReason;

    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundPrice;

    @ApiModelProperty(value = "快递名称")
    private String deliveryName;

    @ApiModelProperty(value = "发货类型")
    private String deliveryType;

    @ApiModelProperty(value = "运单号")
    private String masterWaybillNo;

//    @ApiModelProperty(value = "备注")
//    private String mark;

//    @ApiModelProperty(value = "支付渠道(0微信公众号1微信小程序)")
//    private int isChannel;

    @ApiModelProperty(value = "订单类型:0=课程订单 1=套课订单 2=线上讲座订单 3=展览订单 4=商品订单")
    private Integer type;

    @ApiModelProperty(value = "订单类型")
    private String orderType;

//    @ApiModelProperty(value = "支付方式：前端")
//    private String payTypeStr;

//    @ApiModelProperty(value = "订单状态描述：前端")
//    private String orderStatusMsg;

//    @ApiModelProperty(value = "直播状态")
//    private Integer liveStatus;

//    @ApiModelProperty(value = "直播链接")
//    private String liveLink = "https://baidu.com/";

//    @ApiModelProperty(value = "观看平台")
//    private String viewingPlatformName;

    @ApiModelProperty(value = "商品信息")
    private List<PreOrderCommonVo.PreOrderProductDetail> preOrderProductDetails = new ArrayList<>();

    @ApiModelProperty(value = "课程/套课/讲座/展览信息")
    private PreOrderCommonVo.CourseInfoDetail courseInfoDetails;

    @ApiModelProperty(value = "开票状态  0=未开票 1=已开票")
    private Integer invoicingStatus;

    @ApiModelProperty(value = "一年内是否有课程/讲座/展览 订单退款成功  1=是 0 = 否")
    private Integer isRefund;

    @ApiModelProperty(value = "是否已过指定时间")
    private Integer isTimeElapsed;


    @ApiModelProperty(value = "待支付结束时间")
    private Long unpaidCountdown;

    @ApiModelProperty(value = "是否为预约人 1=是 0否")
    private Integer isAppointedBy;

    @ApiModelProperty(value = "是否为礼品卡订单 1=是 0=否")
    private Integer isGiftCard;

    @ApiModelProperty(value = "讲座类型 1=线下讲座 2=线上讲座")
    private Integer talkType;

    @ApiModelProperty(value = "物流信息")
    private Routes routes;

    @ApiModelProperty(value = "是否取消")
    private Boolean isDel;

    @ApiModelProperty(value = "后台是否取消")
    private Boolean isSystemDel;

    @ApiModelProperty(value = "是否已过申请售后时间")
    private Boolean isAfterSalesTime;

    @ApiModelProperty(value = "是否全部退款")
    private Integer isAllRefund;

}
